#include "ArrayList.h"

/****************start from here**********************/




ArrayList::ArrayList() {
    capacity = 100;
    data = new int[capacity];
    size = 0;
}
    //拷贝构造函数，构造一个逻辑上与参数内容相同的顺序表
ArrayList::ArrayList(const ArrayList&rhs) {
    capacity = 100;
    size = rhs.size;
    data = new int[capacity];
    for (int i = 0; i < size; ++i) {
        data[i] = rhs.data[i];
    }
}
    //原生数组构造函数，构造一个内容与给定数组相同的顺序表
ArrayList::ArrayList(int const a[],int n) {
    capacity = 100;
    size = n;
    data = new int[capacity];
    for (int i = 0; i < size; ++i) {
        data[i] = a[i];
    }
}
    //填充构造函数，构造一个内容为n个value的顺序表
ArrayList::ArrayList(int n,int value) {
    capacity = 100;
    size = n;
    data = new int[capacity];
    for (int i = 0; i < size; ++i) {
        data[i] = value;
    }
}
    //析构函数，一定要自行实现，否则有内存泄漏
ArrayList::~ArrayList() {
    if (data != nullptr) {
        delete[] data;
    }
}
    //子类当中须覆盖并实现父类中的纯虚函数
ArrayList::void insert(int pos,int value) {

}

void remove(int pos) {
    size--;
    for (int i = pos; i < size; ++i) {
        data[i] = data[i + 1];
    }
}
ArrayList::int at(int pos)const {
    return data[pos];
}
modify(int pos,int newValue) {
    data[pos] = newValue;
}
    //对于父类中已实现的虚函数，可以选择覆盖或者不覆盖
    //void disp(ostream&os)const;//这个函数可以直接使用父类中的实现
